﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDebug>
#include <QTcpServer>
#include <QTcpSocket>
#include <QMessageBox>
#include <QHostInfo>
#include <QHostAddress>
#include <QList>
#include <QTimer>
#include <QFileDialog>
#include <QDir>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    QTimer timer1() const;
    void setTimer1(const QTimer &newTimer1);

signals:
    void timer1Changed();

private slots:
    void on_combHostType_currentIndexChanged(int index);

    void on_btnListen_clicked();

private:
    Ui::MainWindow *ui;

    void init();//初始化函数

    QTcpServer* m_tcpServer;//监听指针
    QTcpSocket* m_tcpSocket;//tcp套接字指针

    QTimer m_timer1;//用于客户端连接超时

    quint16 m_outTime;//用于记录超时时间,单位毫秒

    QFile* m_file;//用于接收文件

    qint64 m_fileSize;//用于记录文件大小
    qint64 m_getSize;//用于记录文件已经下载的字节数量

private slots:
    void onNewConnection();

    void onTcpServerError(QAbstractSocket::SocketError);

    void onTcpSocketError();

    void onTcpSocketConnected();

    void onTime1Out();
    void on_btnBrows_clicked();

    void on_btnUpdate_clicked();

    void onReadyRead();
    void on_btnDownload_clicked();
};
#endif // MAINWINDOW_H
